package org.example.leetcode;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @author: lynn
 * @Descript: LC3 给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串 的长度
 * @date: 2021/7/12 9:36
 * @version: 1.0
 */
public class LC3 {
    public static void main(String[] args) {
        String s="pwwkew";
        System.out.println(lengthOfLongestSubstring(s));
    }

    /**
     * 双子针
     * @param s
     * @return
     */
    public static int lengthOfLongestSubstring(String s) {
        int l=0;
        int r=0;
        LinkedList<Character> tmpList=new LinkedList<>(); // fixme
        int res=0;
        while(r<s.length()){
            while ( r<s.length() && !tmpList.contains(s.charAt(r))){ //fixme right
                tmpList.add(s.charAt(r));
                r++;
            }
            res=Math.max(res,tmpList.size());
            if (r==s.length()) break;
            while (l<r){
                tmpList.pollFirst(); //fixme 弹出来
                l++;
                if (s.charAt(l-1)==s.charAt(r)) break;
            }

        }
        return res;
    }
}
